aboutsummaryrefslogtreecommitdiff
path: root/pages/anime/[...id].js
diff options
context:
space:
mode:
authorFactiven <[email protected]>2023-04-29 10:41:23 +0700
committerFactiven <[email protected]>2023-04-29 10:41:23 +0700
commitf5086c7c394a9910a31ec80df143f5655cfde501 (patch)
tree8e99ef6852825ca8a421cc5b52c7c067f5098baa /pages/anime/[...id].js
parentEditor List v0.5 (diff)
downloadmoopa-f5086c7c394a9910a31ec80df143f5655cfde501.tar.xz
moopa-f5086c7c394a9910a31ec80df143f5655cfde501.zip
Bug Fixes
> Fixed loop refresh when failed fetching episode data
Diffstat (limited to 'pages/anime/[...id].js')
-rw-r--r--pages/anime/[...id].js56
1 files changed, 39 insertions, 17 deletions
diff --git a/pages/anime/[...id].js b/pages/anime/[...id].js
index ef54b1b..63849bc 100644
--- a/pages/anime/[...id].js
+++ b/pages/anime/[...id].js
@@ -140,15 +140,6 @@ const infoQuery = `query ($id: Int) {
}
}`;
-const stats = [
- "Watching",
- "Plan to Watch",
- "Completed",
- "Dropped",
- "Paused",
- "Rewatching",
-];
-
export default function Info() {
const { data: session, status } = useSession();
const [data, setData] = useState(null);
@@ -166,8 +157,8 @@ export default function Info() {
const [time, setTime] = useState(0);
const { id } = useRouter().query;
- const [aniProgress, setAniProgress] = useState(0);
const [epiStatus, setEpiStatus] = useState("ok");
+ const [error, setError] = useState(null);
const rec = info?.recommendations?.nodes.map(
(data) => data.mediaRecommendation
@@ -185,6 +176,7 @@ export default function Info() {
progress: null,
stall: false,
EpiStatus: "ok",
+ error: null,
};
// Reset all state variables to their default values
@@ -227,12 +219,20 @@ export default function Info() {
]);
const data = await res.json();
const infos = await info.json();
+
+ if (res.status === 500) {
+ setEpisode(null);
+ setEpiStatus("error");
+ setError(data.message);
+ } else if (res.status === 404) {
+ window.location.href("/404");
+ }
setInfo(infos.data.Media);
// setLog(data);
const textColor = setTxtColor(infos.data.Media.coverImage?.color);
- if (!data || data.episodes.length === 0) {
+ if (!data || data?.episodes?.length === 0) {
const res = await fetch(
`https://api.consumet.org/meta/anilist/info/${id[0]}?provider=9anime`
);
@@ -240,6 +240,7 @@ export default function Info() {
if (res.status === 500) {
setEpisode(null);
setEpiStatus("error");
+ setError(datas.message);
} else {
setEpisode(datas.episodes);
}
@@ -285,7 +286,6 @@ export default function Info() {
if (gut) {
setProgress(gut?.progress);
- setAniProgress(parseInt(gut?.progress));
if (gut.status === "CURRENT") {
setStatuses({ name: "Watching", value: "CURRENT" });
} else if (gut.status === "PLANNING") {
@@ -331,8 +331,6 @@ export default function Info() {
document.body.style.overflow = "auto";
}
- // console.log(progress);
-
return (
<>
<Head>
@@ -726,9 +724,19 @@ export default function Info() {
<p>No Episodes Available</p>
)
) : (
- <p className="flex-center">
- Something went wrong, can't retrieve any episodes :/
- </p>
+ // <p className="flex-center">
+ // Something went wrong, can't retrieve any episodes :/
+ // </p>
+ <div className="flex flex-col">
+ <h1>{epiStatus} while retrieving data</h1>
+ <pre
+ className={`rounded-md overflow-hidden ${getLanguageClassName(
+ "bash"
+ )}`}
+ >
+ <code>{error}</code>
+ </pre>
+ </div>
)}
</div>
)
@@ -799,3 +807,17 @@ function setTxtColor(hexColor) {
const brightness = getBrightness(hexColor);
return brightness < 150 ? "#fff" : "#000";
}
+
+const getLanguageClassName = (language) => {
+ switch (language) {
+ case "javascript":
+ return "language-javascript";
+ case "html":
+ return "language-html";
+ case "bash":
+ return "language-bash";
+ // add more languages here as needed
+ default:
+ return "";
+ }
+};